package app.mvp;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.webkit.JavascriptInterface;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebView;

import app.mvp.base.WebViewBase;

/**
 * Created by 刘智强 on 2017/4/10.
 */

public class TestWebView extends Activity {
    private WebViewBase webview;

    @SuppressLint("JavascriptInterface")
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_webview);

        webview = (WebViewBase) findViewById(R.id.webview);
        webview.post(new Runnable() {
            @Override
            public void run() {
                webview.loadUrl("javascript:+JS中的方法名");


            }
        });

        webview.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                return super.onJsAlert(view, url, message, result);
            }
        });
        webview.addJavascriptInterface(new JsInterface(), "在JS中定义的标准");//API小于16
        webview.addJavascriptInterface(this, "在JS中定义的标准");//API大于等于16 不建议把整个类传给JS，而是要新建一个类专门存放JS要调用的方法

    }

    // 加上此注解，用于html识别该方法,html调用JS中的代码
    @JavascriptInterface
    public void login(String username, String password) {
        if (username.equals(password))
            show("用户名与密码相同");
        else
            show("用户名与密码不同");
    }

    public void show(final String result) {
        webview.post(new Runnable() {
            @Override
            public void run() {
                // 调用html中的js方法
                webview.loadUrl("javascript:show('" + result + "')");
            }
        });
    }

    public class JsInterface {
        public void login(String username, String password) {
            if (username.equals(password))
                show("用户名与密码相同");
            else
                show("用户名与密码不同");
        }

    }
}
